<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            示例 1：
            输入：nums = [-4,-1,0,3,10]
            输出：[0,1,9,16,100]
            解释：平方后，数组变为 [16,1,0,9,100]
            排序后，数组变为 [0,1,9,16,100]

            示例 2：
            输入：nums = [-7,-3,2,3,11]
            输出：[4,9,9,49,121]

            时间：O(n)
            空间：O(1)

            平方之后直接排序
        */
        var sortedSquares = function(nums) {
          // 平方之后直接排序
          let arr = new Array(nums.length)
          for (let i = 0; i < nums.length; i++) {
            arr[i] = nums[i] * nums[i]
          }
          BubbleSort(arr)
          return arr
        };
        // 通过一个变量，只要进行了交换，这个变量就是true，否则是false，是true 就return
        function swap(arr, i, j) {
            let temp = arr[i]
            arr[i] = arr[j]
            arr[j] = temp
        }
        // 2 排序
        function BubbleSort(nums) {
            let len = nums.length
            // 外面for循环 表示走几趟，走 len-1趟，[5, 3, 2, 1] 走三趟
            for (let i = 0; i < len - 1; i++) {
                let isSorted = true
                // 里面的for循环 表示 每一趟走多少次，长度 - i - 1 而i表示当前是第几趟
                for (let j = 0; j < len - i - 1; j++) {
                    if (nums[j] > nums[j + 1]) {
                        swap(nums, j, j + 1)
                        isSorted = false
                    }
                }
                if (isSorted) {
                    break
                }
            }
            return nums
        }
        // console.log(BubbleSort([5, 8, 6, 3, 9, 2, 1, 7]));
        console.log(BubbleSort([5, 2, 1, 6, 3, 7, 8, 9]));
        console.log(sortedSquares([-4,-1,0,3,10]), 'sortedSquares');
        
    </script>
</body>
</html>